RAIS  3.2
C:/Projekte/RAIS/ApplicationLogiLayer/TableManagement.cs
Go to the documentation of this file.
00001 
00028 using System;
00029 using System.Collections.Generic;
00030 using System.Text;
00031 using System.Transactions;
00032 using System.Xml;
00033 
00034 using RAIS.Common.DynamicMaskManagement;
00035 using RAIS.Common.TableManagement;
00036 
00037 using TableTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Table.TableTypeData>;
00038 using FieldTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Field.FieldTypeData>;
00039 using FieldSizes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Field.FieldSizeData>;
00040 using NecessityTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Field.NecessityTypeData>;
00041 using TableGroups = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.TableGroup>;
00042 using Tables = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Table>;
00043 using Fields = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Field>;
00044 using QueryTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Query.QueryTypeData>;
00045 using Queries = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Query>;
00046 using QueryParameterTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.QueryParameter.QueryParameterTypeData>;
00047 //using QueryParameterTypes = System.Collections.Generic.Dictionary<RAIS.Common.TableManagement.QueryParameter.QueryParameterType, RAIS.Common.TableManagement.QueryParameter.QueryParameterTypeData>;
00048 using QueryParameters = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.QueryParameter>;
00049 using CustomizationTypes = System.Collections.Generic.Dictionary<string, RAIS.Common.TableManagement.Query.CustomizationType>;
00050 
00051 namespace RAIS.ApplicationLogicLayer
00052 {
00056     public class TableManagement
00057     {
00058                 //*********************************************************************
00059                 #region Public static methods
00060 
00061 
00062 
00063 
00064 
00065 
00066         public static bool IsEmptyFelds(string tableName, string fieldName)
00067         { 
00068             return DataAccessLayer.TableManagement.IsEmptyFelds(tableName, fieldName);
00069         }
00073         public static void InitializeDAL()
00074                 {
00075                         new DataAccessLayer.TableManagement();
00076                 }
00084         public static Tables GetCustomTablesByGroup(TableGroup tableGroup)
00085         {
00086             return RAIS.DataAccessLayer.TableManagement.GetCustomTablesByTableGroup(tableGroup);
00087         }
00095                 public static Tables GetTablesByGroup(TableGroup tableGroup, bool showProtectors, bool showEvaluators)
00096                 //public static Tables GetTablesByGroup(TableGroup tableGroup, bool designMode)
00097                 {
00098                         return RAIS.DataAccessLayer.TableManagement.GetTablesByTableGroup(tableGroup, showProtectors, showEvaluators);
00099                         //return RAIS.DataAccessLayer.TableManagement.GetTablesByTableGroup(tableGroup, designMode);
00100                 }
00106                 public static Table GetTableByTableID(int id)
00107                 {
00108                         return RAIS.DataAccessLayer.TableManagement.GetTableByTableID(id);
00109                 }
00117                 public static bool AddTable(Table table, TableGroup tableGroup, string maskName, int subcategoryID, DynamicMask.DynamicMaskType? dynamicMaskType, string dynamicMaskName, bool addForeignKeyField, bool createDymamicMask, ref string returnMessage)
00118         {
00119             return RAIS.DataAccessLayer.TableManagement.AddTable(table, tableGroup, maskName, subcategoryID, dynamicMaskType, dynamicMaskName, addForeignKeyField, createDymamicMask, ref returnMessage);
00120         }
00128         public static bool AddField(Table table, Field field, ref string returnMessage)
00129         {
00130             return RAIS.DataAccessLayer.TableManagement.AddField(table, field, ref returnMessage);
00131         }
00138         public static bool RemoveTable(Table table, ref string returnMessage)
00139         {
00140             return RAIS.DataAccessLayer.TableManagement.RemoveTable(table, ref returnMessage);
00141         }
00149         public static bool SaveCustomTable(Table table, ref string returnMessage)
00150         {
00151             using (TransactionScope ts = new TransactionScope())
00152             {
00153                 bool success = true;
00154                 foreach (Field field in table.RemovedFields.Values)
00155                 {
00156                     if (!RemoveField(field, ref returnMessage))
00157                     {
00158                         success = false;
00159                         break;
00160                     }
00161                 }
00162 
00163                 if (success)
00164                 {
00165                     foreach (Field field in table.AddedFields.Values)
00166                     {
00167                         if (!AddField(table, field, ref returnMessage))
00168                         {
00169                             success = false;
00170                             break;
00171                         }
00172                     }
00173                 }
00174 
00175                 if (success)
00176                 {
00177                     returnMessage = RAIS.Common.Messages.MODIFICATIONS_SAVED;
00178                     table.Modified = false;
00179                     ts.Complete();
00180                 }
00181                 return success;
00182             }
00183         }
00190                 public static bool SaveFieldOrder(Field field, ref string returnMessage)
00191                 {
00192                         return RAIS.DataAccessLayer.TableManagement.SaveFieldOrder(field, ref returnMessage);
00193                 }
00200                 public static bool SaveFieldQueryName(Field field, ref string returnMessage)
00201                 {
00202                         return RAIS.DataAccessLayer.TableManagement.SaveFieldQueryName(field, ref returnMessage);
00203                 }
00210                 public static bool SaveField(Field field, ref string returnMessage)
00211                 {
00212                         return RAIS.DataAccessLayer.TableManagement.SaveField(field, ref returnMessage);
00213                 }
00220         public static bool RemoveField(Field field, ref string returnMessage)
00221         {
00222             return RAIS.DataAccessLayer.TableManagement.RemoveField(field, ref returnMessage);
00223         }
00229                 public static Fields GetLookupFieldsByTable(Table table)
00230                 {
00231                         Fields fields = RAIS.DataAccessLayer.TableManagement.GetFieldsByTable(table);
00232                         Fields lookupFields = new Dictionary<string, Field>();
00233 
00234                         foreach (KeyValuePair<string, Field> kvp in fields)
00235                         {
00236                                 Field field = kvp.Value;
00237                                 if (field.IsLookupField)
00238                                         lookupFields.Add(kvp.Key, kvp.Value);
00239                         }
00240                         return lookupFields;
00241                 }
00247                 public static Fields GetTextFieldsByTable(Table table)
00248                 {
00249                         Fields fields = RAIS.DataAccessLayer.TableManagement.GetFieldsByTable(table);
00250                         Fields lookupFields = new Dictionary<string, Field>();
00251 
00252                         foreach (KeyValuePair<string, Field> kvp in fields)
00253                         {
00254                                 Field field = kvp.Value;
00255                                 if (field.IsTextField)
00256                                         lookupFields.Add(kvp.Key, kvp.Value);
00257                         }
00258                         return lookupFields;
00259                 }
00265         public static Fields GetFieldsByTable(Table table)
00266         {
00267             return RAIS.DataAccessLayer.TableManagement.GetFieldsByTable(table);
00268         }
00274                 public static XmlDocument GetTableAndFieldXml()
00275                 {
00276                         return RAIS.DataAccessLayer.TableManagement.GetTableAndFieldXml();
00277                 }
00283                 public static FieldSizes GetFieldSizesByFieldType(Field.FieldType fieldType)
00284                 {
00285                         return RAIS.DataAccessLayer.TableManagement.GetFieldSizesByFieldType(fieldType);
00286                 }
00292                 public static Queries GetQueries()
00293                 {
00294             return RAIS.DataAccessLayer.TableManagement.GetQueries();
00295                 }
00301                 public static Queries GetQueriesByCustomizationType(Query.CustomizationType customizationType)
00302                 {
00303                         Query.QueryType queryType = Query.GetQueryTypeByCustomizationType(customizationType);
00304             return DataAccessLayer.TableManagement.GetQueriesByQueryType(queryType);
00305                 }
00311                 public static Queries GetQueriesByQueryType(Query.QueryType queryType)
00312                 {
00313             return DataAccessLayer.TableManagement.GetQueriesByQueryType(queryType);
00314                 }
00321                 public static bool AddQuery(Query query, ref string returnMessage)
00322                 {
00323                         return RAIS.DataAccessLayer.TableManagement.AddQuery(query, ref returnMessage);
00324                 }
00331                 public static bool SaveQuery(Query query, ref string returnMessage)
00332                 {
00333                         return RAIS.DataAccessLayer.TableManagement.SaveQuery(query, ref returnMessage);
00334                 }
00341                 public static bool RemoveQuery(Query query, ref string returnMessage)
00342                 {
00343                         return RAIS.DataAccessLayer.TableManagement.RemoveQuery(query, ref returnMessage);
00344                 }
00351                 public static bool ValidateQueryParameters(Query query, ref string returnMessage)
00352                 {
00353                         bool success = true;
00354                         bool startDateExists = false;
00355                         bool endDateExists = false;
00356                         if (query != null)
00357                         {
00358                                 foreach (KeyValuePair<string, QueryParameter> kvp in query.QueryParameters)
00359                                 {
00360                                         QueryParameter parameter = kvp.Value;
00361                                         if (parameter.Type == QueryParameter.QueryParameterType.Unknown)
00362                                         {
00363                                                 returnMessage = Common.Messages.QUERY_PARAMETER_UNKNOWN_EXISTS;
00364                                                 success = false;
00365                                                 break;
00366                                         }
00367 
00368                                         if (parameter.Type == QueryParameter.QueryParameterType.DatesRangeStartDate)
00369                                                 startDateExists = true;
00370                                         if (parameter.Type == QueryParameter.QueryParameterType.DatesRangeEndDate)
00371                                                 endDateExists = true;
00372                                 }
00373 
00374                                 if (startDateExists && !endDateExists
00375                                         || !startDateExists && endDateExists)
00376                                 {
00377                                         returnMessage = Common.Messages.QUERY_PARAMETER_DATES_RANGE_ERROR;
00378                                         success = false;
00379                                 }
00380                         }
00381 
00382                         return success;
00383                 }
00390                 public static bool CreateQuery(Query query, ref string returnMessage)
00391                 {
00392                         return RAIS.DataAccessLayer.TableManagement.CreateQuery(query, ref returnMessage);
00393                 }
00400                 public static bool CheckQuery(Query query, ref string returnMessage)
00401                 {
00402                         return RAIS.DataAccessLayer.TableManagement.CheckQuery(query, ref returnMessage);
00403                 }
00409                 public static QueryParameterTypes GetQueryParameterTypesByQuery(Query query)
00410                 {
00411                         QueryParameterTypes allQueryParameterTypes = DataAccessLayer.TableManagement.QueryParameterTypes;
00412                         QueryParameterTypes queryParameterTypes = new Dictionary<string, QueryParameter.QueryParameterTypeData>();
00413 
00414                         if (query != null)
00415                         {
00416                                 foreach (KeyValuePair<string, QueryParameter.QueryParameterTypeData> kvp in allQueryParameterTypes)
00417                                 {
00418                                         QueryParameter.QueryParameterTypeData typeData = kvp.Value;
00419                                         if (query.QueryForFilters && typeData.ParameterTypeForFilters)
00420                                                 queryParameterTypes.Add(kvp.Key, typeData);
00421 
00422                                         if (!query.QueryForFilters && typeData.ParameterTypeForOthers)
00423                                                 queryParameterTypes.Add(kvp.Key, typeData);
00424                                 }
00425                         }
00426 
00427                         return queryParameterTypes;
00428                 }
00434                 public static QueryParameters GetQueryParametersByQuery(Query query)
00435                 {
00436                         return DataAccessLayer.TableManagement.GetQueryParametersByQuery(query);
00437                 }
00445                 public static bool AddQueryParameter(Query query, QueryParameter queryParameter, ref string returnMessage)
00446                 {
00447                         return DataAccessLayer.TableManagement.AddQueryParameter(query, queryParameter, ref returnMessage);
00448                 }
00455                 public static bool SaveQueryParameter(QueryParameter queryParameter, ref string returnMessage)
00456                 {
00457                         return DataAccessLayer.TableManagement.SaveQueryParameter(queryParameter, ref returnMessage);
00458                 }
00465                 public static bool SaveQueryParameterOrder(QueryParameter queryParameter, ref string returnMessage)
00466                 {
00467                         return DataAccessLayer.TableManagement.SaveQueryParameterOrder(queryParameter, ref returnMessage);
00468                 }
00475                 public static bool RemoveQueryParameter(QueryParameter queryParameter, ref string returnMessage)
00476                 {
00477                         return DataAccessLayer.TableManagement.RemoveQueryParameter(queryParameter, ref returnMessage);
00478                 }
00483                 public static CustomizationTypes GetCustomizationTypes()
00484                 {
00485                         CustomizationTypes types = new Dictionary<string, Query.CustomizationType>();
00486 
00487                         types.Add("List With Filter Mask", Query.CustomizationType.ListWithFilter);
00488                         types.Add("Query Report", Query.CustomizationType.QueryReport);
00489                         types.Add("Statistics Report", Query.CustomizationType.StatisticsReport);
00490                         types.Add("Consistency Check", Query.CustomizationType.ConsistencyCheck);
00491                         types.Add("Dynamic Mask Field", Query.CustomizationType.EntryFilter);
00492             types.Add("RAN Autogeneration", Query.CustomizationType.RanAutogeneration);
00493 
00494                         return types;
00495                 }
00502                 public static bool CreateHistoryTable(Table table, ref string returnMessage)
00503                 {
00504                         return RAIS.DataAccessLayer.TableManagement.CreateHistoryTable(table, ref returnMessage);
00505                 }
00511                 public static List<string> GetQueryAssignedObjectsNames(Query query)
00512                 {
00513                         return DataAccessLayer.TableManagement.GetQueryAssignedObjectsNames(query);
00514                 }
00520         public static bool IsTableContainData(Table table)
00521         {
00522             return DataAccessLayer.TableManagement.IsTableContainData(table);
00523         }
00524         #endregion
00525                 //*********************************************************************
00526                 #region Properties
00527 
00534         public static FieldTypes FieldTypes
00535         {
00536             get { return RAIS.DataAccessLayer.TableManagement.FieldTypes; }
00537         }
00545         public static FieldSizes FieldSizes
00546         {
00547             get { return RAIS.DataAccessLayer.TableManagement.FieldSizes; }
00548         }
00556                 public static NecessityTypes NecessityTypes
00557                 {
00558                         get { return RAIS.DataAccessLayer.TableManagement.NecessityTypes; }
00559                 }
00567         public static TableTypes TableTypes
00568         {
00569             get { return RAIS.DataAccessLayer.TableManagement.TableTypes; }
00570         }
00578         public static TableGroups TableGroups
00579         {
00580             get { return RAIS.DataAccessLayer.TableManagement.TableGroups; }
00581         }
00589                 public static Tables AllTables
00590                 {
00591                         get { return RAIS.DataAccessLayer.TableManagement.AllTables; }
00592                 }
00600                 public static QueryTypes QueryTypes
00601                 {
00602                         get { return RAIS.DataAccessLayer.TableManagement.QueryTypes; }
00603                 }
00605                 //\brief This property retrieves a list of all available query parameter types. 
00606 
00607                 //\return Dictionary of query parameter type names vs query parameter type objects
00608                 //\warning Addressing this property casues an MS SQL query. 
00609                 //         Use is for initialising a local variable instead of addressing it iteratively.
00610                 //*/
00611                 //public static QueryParameterTypes QueryParameterTypes
00612                 //{
00613                 //    get { return RAIS.DataAccessLayer.TableManagement.QueryParameterTypes; }
00614                 //}
00615                 #endregion
00616     }
00617 }